package _022_2_16

func productExceptSelf(nums []int) []int {
	numSum := 1
	zeroNum := 0
	for i := 0; i < len(nums); i++ {
		if nums[i] == 0 {
			zeroNum++
			continue
		}
		numSum *= nums[i]
	}
	if zeroNum == 0 {
		for i := 0; i < len(nums); i++ {
			if nums[i] == 0 {
				nums[i] = 0
				continue
			}
			nums[i] = numSum / nums[i]
		}
	}

	if zeroNum == 1 {
		for i := 0; i < len(nums); i++ {
			if nums[i] == 0 {
				nums[i] = numSum
				continue
			}
			nums[i] = 0
		}
	}

	if zeroNum >= 0 {
		for i := 0; i < len(nums); i++ {

			nums[i] = 0
		}
	}

	return nums
}
